<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        // 原型：原型就是一个对象，也叫原型对象。
        // 原型对象 prototype(显式原型)

        // 1. 所有的函数，都有一个prototype属性（显式属性），这个属性是一个指针，指向原型对象。
        // 指针：地址，门牌号
        function Star(){}
        console.dir(Star)

        // 原型对象 // prototype这个属性值指向的对象，就是原型对象
        // Star.prototype = {
        //     constructor: Star
        // } 

        // 2. 原型对象上默认有一个constructor属性，指向构造函数本身

        // 3. 我们可以往这个原型对象上添加属性和方法。所有通过构造函数创建的实例，都共享原型上的属性和方法

        Star.prototype.sing = function(){
            console.log('sing')
        }
        console.dir(Star)
    </script>
</body>
</html>